﻿#ifndef REGISTERCENTER_USER_H
#define REGISTERCENTER_USER_H

#include <qobject.h>
#include <qhash.h>

#include "LogSaver.h"

class User;
class TcpIOer;
class RegisterCenter_User : public QObject
{
  Q_OBJECT
private://property
  QHash<uint/*userId*/,User*> userList;
  QHash<uint/*userId*/,TcpIOer*> userIdToTcpIOerList;
  QHash<TcpIOer*,uint/*userId*/> tcpIOerToUserIdList;
  const int defaultLifeTime=15*1000;//超时时间稍微大于真正的超时时间，避免网络延时等因素的干扰
private://dependency
  LogSaver* logSaver=LogSaver::getLogSaver();
public:
  explicit RegisterCenter_User();
  virtual ~RegisterCenter_User();
signals:
public:
  bool isOnline(uint userId);
  bool isOnline(TcpIOer* tcpIOer);
  void updateLifeTime(uint userId,const int lifeTime_ms=0);
  User* getUserById(uint userId);
  TcpIOer* getTcpIOerById(uint userId);
  int getUserIdByTcpIOer(TcpIOer* tcpIOer);
public://login and logout
  void userLogin(User* user,TcpIOer* tcpIOer);
  void userLogout(uint userId);
  void userLogout(TcpIOer* tcpIOer);
};

#endif // REGISTERCENTER_USER_H
